package Exception;

/**
 * ClassName:ExceptionDome008
 * Package:Exception
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/25-21:44
 * @Version:v1.0
 */
public class ExceptionDome008 {
    /**
     * 灵魂四问
     * 1.如果try中没有发现问题,怎么执行？
     * 2.如果try中可能遇到多个问题,怎么执行?
     * 3.如果try中遇到的问题没有被捕获,怎么执行?
     * 4.如果try中遇到了问题,那么try下面的其他代码还会执行吗?
     */
    public static void main(String[] args) {
        //2.如果try中可能遇到多个问题,怎么执行?
        //写多个catch与之对应
        //细节：如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面
        int[] arr = {1, 2, 33, 4, 5, 6};
        try {
            System.out.println(arr[10]);//ArrayIndexOutOfBoundsException
            System.out.println(2 / 0);//ArithmeticException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("索引越界了");
        } catch (ArithmeticException e) {
            System.out.println("除数不能为0");
        } catch (Exception e) {
            System.out.println("Exception");
        }
        System.out.println("看看我执行了吗?");

        /*
         * JDK7
         * 在JDK7之后,我们可以在catch中同时捕获多个异常,中间用  |  进行隔开
         * 表示如果出现A异常或者B异常的话,采取同一种处理方案*/
        try {
            System.out.println(arr[10]);//ArrayIndexOutOfBoundsException
            System.out.println(2 / 0);//ArithmeticException
        } catch (ArrayIndexOutOfBoundsException | ArithmeticException e){
            System.out.println("索引越界了");
        } catch (Exception e){
            System.out.println("Exception");
        }
        System.out.println("看看我执行了吗?");
    }
}
